function crit1_v4
%version 0: 04/04/09 -
Calculates hard and soft changeovers for a set
%schedule
%--------------------------------------------------------------------------
%version 1: 04/04/09 -
Calculates hard and soft changeovers for a set
%schedule. The import file should be the IPC schedule
(numbers) in the
%first column followed by
the binary FSI inclusions (utilizes hard
%changeover avoidence)
%--------------------------------------------------------------------------
%version 2: 04/04/09 -
basic greedy heuristic
%--------------------------------------------------------------------------
%version 3: 04/04/09 - the
sorting of replacement fsi's in the existing
%collator now takes into
account whether the fsi being replaced was used in
%the previous IPC
%--------------------------------------------------------------------------
%version 4: 04/04/09 -
added
% for zer = 1:col;
% if countzeros +
% countzeros2 = countzeros2 + 1;
% end
% end
% X3 = zeros(g+countzeros2-1,3);
%This
accounts for multiple open hoppers on the collator so that more than
%one will be used to avoid
hard-changeovers
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
A = xlsread('test_worst_fsi');
tic
SUMROW = sum(A,2);
[dd ee]=size(SUMROW);
TEMP2 = (1:1:dd)';
IPC = [TEMP2 SUMROW];
SUMCOL = sum(A,1);
FSI_PERCENT = SUMCOL/dd;
[n m] = size(A);
col = 50;
col2 = 80 - col;
START = A * FSI_PERCENT';
TEMP1 = [IPC START];
% = [IPC# totalFSI rank(# of FSI) FSIusage]
IPC_INFO = sortrows(TEMP1,-3);
FSI_NUM = (1:1:m);
%needed?
H = IPC_INFO(:,1);
%initial collator
population
x=1;
for i = 1:m;
if A(H(1),i) == 1;
x=x+1;
end
end
SCHED = [H(1)
0 0
H(1)=[];
H=sortrows(H,1);
for l = 1:n-1;
NEXT2=[];
for i = 1:n-l;
countzeros =
0;
countzeros2 = 0;
NEXT1 = [];
soft = 0;
hard = 0;
COL_TEMP =
X0 = find(A(H(i),:)
== 1);
X1 = setdiff(X0,COL_TEMP);
[q w] =
size(X1);
X2 = setdiff(COL_TEMP,X0);
[f g] =
size(X2);
for zer = 1:col;
if countzeros +
countzeros2 = countzeros2 + 1;
end
end
X3 = zeros(g+countzeros2-1,3);
for k = 1:g;
if X2(1,k)~=0;
A_TEMP = A(H,:);
[tt
yy] = size(A_TEMP);
SUMCOL_TEMP = sum(A_TEMP,1);
FSI_PERCENT_TEMP =
SUMCOL_TEMP/tt;
X3(k,1)
= X2(1,k);
X3(k,2)
= FSI_PERCENT_TEMP(1,X2(k));
if X2(1,k) -
A(SCHED(l,1),X2(1,k)) ~= X2(1,k);
X3(k,3)
= 1;
else
X3(k,3)
= .5;
end
end
end
X3 = sortrows(X3,[3
2]);
X3(:,2)=[];
X3(:,2)=[];
for j = 1:w;
X4 = find(COL_TEMP
== X3(j));
if X3(j,1)~=0 && X3(j,1) -
A(SCHED(l,1),X3(j,1)) ~= X3(j,1);
hard =
hard + 1;
else
soft =
soft + 1;
end
COL_TEMP(X4(1)) = X1(1);
X1(1)=[];
end
NEXT1 = [H(i)
hard soft COL_TEMP];
NEXT2 = [NEXT2;NEXT1];
end
if i < n;
NEXT2 = sortrows(NEXT2,[2,3]);
SCHED = [SCHED; NEXT2(1,:)];
H=setdiff(H,NEXT2(1,1))';
elseif i == n;
SCHED = [SCHED; NEXT2(1,:)];
H=setdiff(H,NEXT2(1,1))';
end
end
toc
xlswrite(['results_' date], SCHED);
hardtotal =
sum(SCHED(:,2))
softtotal =
sum(SCHED(:,3))